\section{Valutazione dell'algoritmo KGA}
L'algoritmo \`e stato testato su due categorie di problemi: la prima consisteva di una serie di dataset di prova generati artificialmente, in cui sono stati fatti variare: numero di cluster, dimensioni e la quantit\`a di rumore; mentre la seconda trattava la clusterizzazione di dati biomedici (il dataset \textbf{leukemia}), dati caratterizzati da un elevato numero di dimensioni (7129) e da una discreta quantit\`a di rumore.
\begin{figure}[h!b]
    \centering
    \includegraphics[width=8cm,keepaspectratio=true]{img/4pentagoni.jpg}
    \caption{Problema giocattolo di 5 centri con percentuale di rumore crescente: a) 30\%, b) 60\%, c) 80\%, d) 90\%}
    \label{fig:penta}
\end{figure}
Nel primo caso l'algoritmo si \`e sempre comportato molto bene: sia con i casi banali, ovvero bassa dimensionalit\`a e cluster ben separati tra loro, che con quelli pi\`u complessi il risultato finale \`e pi\`u che soddisfacente, come si pu\`o vedere nella figura \ref{fig:penta}.

\noindent Sia aumentando la vicinanza tra i cluster che aumentando la dispersione dei punti, l'algoritmo \`e sempre in grado di distinguere tra i vari cluster con un buon grado di precisione.
Nel test sul dataset leukemia invece l'algoritmo non ha saputo dare risultati altrettanto buoni: effettuando la clusterizzazione sui punti del training test si ottiene una percentuale di errori intorno al 20\%, mentre i punti del training test vengono quasi tutti assegnati ad un solo cluster, il che porta s\`\i\ ad una percentuale d'errore analoga, ma che risulta falsata dal momento che nel dataset una delle due classi \`e significativamente meno rappresentata rispetto all'altra. Anche aumentare il numero di individui della popolazione, il numero delle iterazioni e il grado di mutazione non ha portato alcun risultato significativo.

\subsection{Conclusioni}

Si pu\`o notare che, nel caso di dataset in cui i cluster sono ben divisi tra loro e in presenza di poco rumore, il comportarsi bene dell'algoritmo KGA \`e legato pi\`u che altro al fatto che ogni volta che per ogni esecuzione vengono presi in considerazione \textbf{dieci} cromosomi (corrispondenti a dieci possibili disposizioni dei centroidi iniziali): tra questi \`e molto probabile che almeno \textbf{una} di queste disposizioni (molto probabilmente anche \textbf{pi\`u} d'una) \textbf{non} comporti la convergenza prematura dell'algoritmo K-means, e di conseguenza sia in grado di giungere alla soluzione ottima anche senza trarre vantaggio dalla presenza degli altri individui della popolazione. Quest'individuo e i suoi immediati discendenti, avendo gi\`a nelle prime fasi una fitness particolarmente alta rispetto a quella degli altri, tenderanno a rimpiazzare nel giro di poche generazioni l'intera popolazione.
Il vantaggio di una strategia evolutiva rispetto all'utilizzo del solo algoritmo K-means diventa evidente nel momento in cui si prende in considerazione un dataset pi\`u complesso, composto ad esempio di punti appartenenti a due cluster particolarmente ravvicinati e disposti in un volume \textbf{non} piccolo (rispetto al dominio) attorno al loro centroide: in questo caso infatti l'uso di una popolazione di individui anzich\'e un singolo individuo e lo scambio di materiale genetico tra di essi tramite le operazioni di crossover e mutazione permette di migliorare sensibilmente le prestazioni dell'algoritmo di clusterizzazione.
